home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / postgres / postgre4.z / postgre4 / newconf / Make < prev    next >
Encoding:
Text File  |  1993-04-11  |  14.3 KB  |  507 lines

  1. #! /bin/csh -f
  2. # $Header: /private/postgres/newconf/RCS/Make,v 1.91 1992/08/12 03:38:10 mao Exp $
  3.  
  4. if (! $?DEVELOPMENT) setenv DEVELOPMENT f
  5. if (! $?STRIPOBJS) setenv STRIPOBJS f
  6. if (! $?POSTGRESHOME) setenv POSTGRESHOME /usr/postgres
  7.  
  8. #
  9. # CHANGE ME WHEN MAKING RELEASES !!!!!!!!!!!!!
  10. #
  11.  
  12. set ship=1
  13.  
  14. if ($?SPRITE_OS) then
  15.     setenv SHELL /bin/sh
  16.     set MAKEF = "/postdev/choi/make -f -"
  17.     set MAKE = "/postdev/choi/make -f -"
  18. else if (`hostname` == "hermes.Berkeley.EDU") then
  19.     set MAKE = "/usr/local/gmake -f -"
  20. else
  21.     set MAKE = "make -f -"
  22. endif
  23.  
  24. set accessdeps = 
  25. set commanddeps = 
  26. set executordeps =
  27. set libdeps =
  28. set maindeps =
  29. set parserdeps =
  30. set plannerdeps =
  31. set portdeps =
  32. set rewritedeps =
  33. set rulesdeps =
  34. set storagedeps =
  35. set tcopdeps =
  36. set utilsdeps =
  37.  
  38. set defaultrules = "defaults.mk"
  39. set ext = "o"
  40.  
  41. set targs =
  42. set defs =
  43. set opts =
  44.  
  45. set ALL = (inh postgres support postmaster )
  46. set DFLAGS =
  47. set SFLAG =
  48. set PFLAG =
  49.  
  50. # parse arg list
  51. foreach i ( $argv )
  52.     switch ($i)
  53.     case "-s":        # use dependencies
  54.         set accessdeps = DEPS/ACCESS.d
  55.         set commanddeps = DEPS/COMMANDS.d
  56.         set executordeps = DEPS/EXECUTOR.d
  57.         set libdeps = DEPS/LIB.d
  58.         set maindeps = DEPS/MAIN.d
  59.         set parserdeps = DEPS/PARSER.d
  60.         set plannerdeps = DEPS/PLANNER.d
  61.         set portdeps = DEPS/PORT.d
  62.         set rewritedeps = DEPS/REWRITE.d
  63.         set rulesdeps = DEPS/RULES.d
  64.         set storagedeps = DEPS/STORAGE.d
  65.         set tcopdeps = DEPS/TCOP.d
  66.         set utilsdeps = DEPS/UTIL.d
  67.         set SFLAG = "-s"
  68.         breaksw
  69.     case "-depend":        # generate dependencies for targets
  70.         set defaultrules = "depends.mk"
  71.         set ext = "d"
  72.         breaksw
  73.     case "-development":    # set development environ variable
  74.         setenv DEVELOPMENT t
  75.         breaksw
  76.     case "-strip":        # set strip objects environ variable
  77.         setenv STRIPOBJS t
  78.         breaksw
  79.     case "-print":        # print the makefile instead of executing it
  80.         set MAKE = $cwd/debug
  81.         breaksw
  82.     case "-debug":        # walk thru makefile, printing out the targets
  83.         set MAKE = ( $MAKE -n )
  84.         breaksw
  85.     case "-silent":        # simulate the "@" construct
  86.         set MAKE = ( $MAKE -s )
  87.         breaksw
  88.     case "-touch":        # touch targets instead of making them
  89.         set MAKE = ( $MAKE -t )
  90.         breaksw
  91.     case "-parallel":
  92.         set PARALLELMAKE
  93.         set PFLAG = "-parallel"
  94.         breaksw
  95.     case "-d*":
  96.         set  defs = ( $defs `echo $i | sed -e s/-d//` )
  97. #            set DFLAGS = ( $DFLAGS $i )
  98.         set MAKE = ( $MAKE `echo $i | sed -e s/-d//` )
  99.                 breaksw
  100.         case "-*":
  101.                 set opts = ( $opts $i )
  102.         set MAKE = ( $MAKE $i )
  103.                 breaksw
  104.     default:
  105.         set targs = ( $targs $i )
  106.         breaksw
  107.     endsw
  108. end
  109.  
  110. #
  111. # build the targets the user asked for
  112. # organized according to the most frequently used targets,
  113. # modules (parser,planner, etc. ) are listed alphabetically in part 2
  114. #
  115. foreach i ( $targs )
  116.     #
  117.     # part 1 - everybody's favorite targets
  118.     #
  119.     switch ( $i )
  120.     case "quick-link":    # assume all big .o's are up to date
  121.     cat config.mk postgres.mk $defaultrules \
  122.     | ( cd .. ; $MAKE POSTGRES.$ext )
  123.     breaksw
  124.     case "alltests":
  125.         pushd $POSTGRESHOME/test
  126.         sh ./alltests.sh
  127.         popd
  128.         breaksw
  129.     case "postgres":      # the postgres binary in the obj dir
  130.         if ($?PARALLELMAKE) then
  131.             foreach i (access command executor lib main parser planner \
  132.                    port rewrite rules storage tcop utils)
  133.             echo Make $i in parallel;
  134.             Make -parallel $i &
  135.             end
  136.             wait
  137.             echo parallel phase done
  138.         else
  139.         endif
  140.         cat config.mk \
  141.         FILES/{main,commands,executor,parser}.mkf \
  142.         FILES/{planner,rewrite,rules,tcop,inh}.mkf \
  143.         FILES/{access,libraries,storage,utilities}.mkf \
  144.         FILES/bootstrap.mkf \
  145.         port.mk postgres.mk \
  146.         $defaultrules \
  147.         $accessdeps $commanddeps $executordeps $libdeps \
  148.         $maindeps $parserdeps $plannerdeps $rewritedeps $portdeps \
  149.         $rulesdeps $storagedeps $tcopdeps $utilsdeps \
  150.         | (cd ..; $MAKE POSTGRES.$ext)
  151.         breaksw
  152.     case "postpure":      # the "pure" postgres binary in the obj dir
  153.         if ($?PARALLELMAKE) then
  154.             foreach i (access command executor lib main parser planner \
  155.                    port rewrite rules storage tcop utils)
  156.             echo Make $i in parallel;
  157.             Make -parallel $i &
  158.             end
  159.             wait
  160.             echo parallel phase done
  161.         else
  162.         endif
  163.         cat config.mk \
  164.         FILES/{main,commands,executor,parser}.mkf \
  165.         FILES/{planner,rewrite,rules,tcop,inh}.mkf \
  166.         FILES/{access,libraries,storage,utilities}.mkf \
  167.         FILES/bootstrap.mkf \
  168.         port.mk postgres.mk \
  169.         $defaultrules \
  170.         $accessdeps $commanddeps $executordeps $libdeps \
  171.         $maindeps $parserdeps $plannerdeps $rewritedeps $portdeps \
  172.         $rulesdeps $storagedeps $tcopdeps $utilsdeps \
  173.         | (cd ..; $MAKE POSTPURE.$ext)
  174.         breaksw
  175.     case "inh":        # the nodes stuff, use before postgres
  176.         cat config.mk FILES/inh.mkf inh.mk $defaultrules \
  177.         | (cd ..; $MAKE allobjs)
  178.         breaksw
  179.     #
  180.     # part 2 - modules within postgres
  181.     #
  182.     case "access":        # the access methods module
  183.         cat config.mk \
  184.         FILES/access.mkf postgres.mk $defaultrules $accessdeps \
  185.         | (cd ..; $MAKE ACCESS.$ext)
  186.         breaksw
  187.     case "command":        # the various utilities commands
  188.         cat config.mk \
  189.         FILES/commands.mkf postgres.mk $defaultrules $commanddeps \
  190.         | (cd ..; $MAKE COMMANDS.$ext)
  191.         breaksw
  192.     case "executor":    # the executor module
  193.         cat config.mk \
  194.         FILES/executor.mkf postgres.mk $defaultrules $executordeps \
  195.         | (cd ..; $MAKE EXECUTOR.$ext)
  196.         breaksw
  197.     case "lib":        # various lowlevel libraries
  198.         cat config.mk \
  199.         FILES/libraries.mkf postgres.mk $defaultrules $libdeps \
  200.         | (cd ..; $MAKE LIB.$ext)
  201.         breaksw
  202.     case "main":        # main()
  203.         cat config.mk \
  204.         FILES/main.mkf postgres.mk $defaultrules $maindeps \
  205.         | (cd ..; $MAKE MAIN.$ext)
  206.         breaksw
  207.     case "parser":        # the parser module
  208.         cat config.mk \
  209.         FILES/parser.mkf postgres.mk $defaultrules $parserdeps \
  210.         | (cd ..; $MAKE PARSER.$ext)
  211.         breaksw
  212.     case "planner":        # the planner module
  213.         cat config.mk \
  214.         FILES/planner.mkf postgres.mk $defaultrules $plannerdeps \
  215.         | (cd ..; $MAKE PLANNER.$ext)
  216.         breaksw
  217.     case "port":        # the port specific module
  218.         cat config.mk \
  219.         port.mk postgres.mk $defaultrules $portdeps \
  220.         | (cd ..; $MAKE PORT.$ext)
  221.         breaksw
  222.     case "rewrite":        # the rewrite rules module
  223.         cat config.mk FILES/rewrite.mkf \
  224.         postgres.mk $defaultrules $rewritedeps \
  225.         | (cd ..; $MAKE REWRITE.$ext)
  226.         breaksw
  227.     case "rules":        # the tuple level rules module
  228.         cat config.mk FILES/rules.mkf \
  229.         postgres.mk $defaultrules $rulesdeps \
  230.         | (cd ..; $MAKE RULES.$ext)
  231.         breaksw
  232.     case "storage":        # the storage manager module
  233.         cat config.mk FILES/storage.mkf \
  234.         postgres.mk $defaultrules $storagedeps \
  235.         | (cd ..; $MAKE STORAGE.$ext)
  236.         breaksw
  237.     case "tcop":        # the traffic cop
  238.         cat config.mk FILES/tcop.mkf \
  239.         postgres.mk $defaultrules $tcopdeps \
  240.         | (cd ..; $MAKE TCOP.$ext)
  241.         breaksw
  242.     case "utils":        # misc utility code
  243.         cat config.mk \
  244.         FILES/utilities.mkf postgres.mk $defaultrules $utilsdeps \
  245.         | (cd ..; $MAKE UTIL.$ext)
  246.         breaksw
  247.     #"
  248.     #" Part 3 - utility type targets (not actually for compile/link cycle
  249.     #"
  250.     case "help":
  251.         egrep '(case \")' Make 
  252.         breaksw
  253.     case "links":        # links from obj to src directory
  254.         cat config.mk misc.mk | $MAKE links
  255.         breaksw
  256.     case "missing":        
  257.         cat config.mk \
  258.         support.mk $defaultrules | $MAKE missing
  259.         breaksw
  260.     case "newfiles":    # files that you haven't checked out
  261.         cat config.mk misc.mk | $MAKE newfiles
  262.         breaksw
  263.     case "getfiles":
  264.         cat config.mk misc.mk | $MAKE newfiles_co
  265.         breaksw
  266.     case "newfiles_co":    # Make newfiles + check out
  267.         cat config.mk misc.mk | $MAKE newfiles_co
  268.         breaksw
  269.     case "obsfiles":    # files you have that I don't believe exist
  270.         cat config.mk misc.mk | $MAKE obsfiles
  271.         breaksw
  272.     #"
  273.     #" Part 4a - support programs (not often recompiled )
  274.     #"
  275.     case "bkifiles":    # local.bki and dbdb.bki, needed by createdb
  276.         cat config.mk FILES/support.mkf support.mk $defaultrules \
  277.         | (cd ..; $MAKE bkifiles)
  278.         breaksw
  279.     case "rmbkifiles":    # removes local.bki and dbdb.bki
  280.         cat config.mk FILES/support.mkf support.mk $defaultrules \
  281.         | (cd ..; $MAKE rmbkifiles)
  282.         breaksw
  283.     case "cinterface":    # library against which to link support targets
  284.         cat config.mk \
  285.         FILES/{access,libraries,storage,utilities,inh}.mkf \
  286.         port.mk support.mk cinterface.mk $defaultrules \
  287.         | (cd ..; $MAKE cinterface)
  288.         breaksw
  289.     case "pg_uid":    # determines postgres' uid
  290.         cat config.mk \
  291.         FILES/support.mkf support.mk $defaultrules \
  292.         | (cd ..; $MAKE pg_uid)
  293.         breaksw
  294.     case "pg_version":    # database creation utility
  295.         cat config.mk \
  296.         FILES/support.mkf support.mk $defaultrules \
  297.         | (cd ..; $MAKE pg_version)
  298.         breaksw
  299.     case "createdb":
  300.         cat config.mk \
  301.         FILES/support.mkf support.mk $defaultrules \
  302.         | (cd ..; $MAKE createdb)
  303.         breaksw
  304.         breaksw
  305.     case "destroydb":
  306.         cat config.mk \
  307.         FILES/support.mkf support.mk $defaultrules \
  308.         | (cd ..; $MAKE destroydb)
  309.         breaksw
  310.     case "libpq":
  311.         cat config.mk \
  312.         FILES/support.mkf support.mk $defaultrules \
  313.         | (cd ..; $MAKE libpq)
  314.         breaksw
  315.     case "monitor":        # the terminal monitor
  316.         cat config.mk \
  317.         FILES/support.mkf support.mk $defaultrules \
  318.         | (cd .. ; $MAKE monitor)
  319.         breaksw
  320.     case "pagedoc":        # the postgres page doctor
  321.         cat config.mk \
  322.         FILES/support.mkf support.mk $defaultrules \
  323.         | (cd .. ; $MAKE pagedoc)
  324.         breaksw
  325.     case "shmemdoc":    # the postgres shared memory doctor
  326.         cat config.mk \
  327.         FILES/support.mkf support.mk $defaultrules \
  328.         | (cd .. ; $MAKE shmemdoc)
  329.         breaksw
  330.     case "xexemon":        # the X executor monitor
  331.         cat config.mk \
  332.         FILES/support.mkf support.mk $defaultrules \
  333.         | (cd .. ; $MAKE xexemon)
  334.         breaksw
  335.     case "postmaster":    # make me if you want multi-user
  336.         cat config.mk \
  337.         FILES/{access,libraries,storage,utilities,inh}.mkf \
  338.         port.mk support.mk cinterface.mk postmaster.mk \
  339.         | (cd ..; $MAKE postmasterlinks)
  340.         cat config.mk \
  341.         FILES/{access,libraries,storage,utilities,inh}.mkf \
  342.         port.mk support.mk cinterface.mk postmaster.mk \
  343.         | (cd ..; $MAKE postmaster)
  344.         breaksw
  345.     case "puremaster":    # make me if you want multi-user
  346.         cat config.mk \
  347.         FILES/{access,libraries,storage,utilities,inh}.mkf \
  348.         port.mk support.mk cinterface.mk postmaster.mk $defaultrules \
  349.         | (cd ..; $MAKE postmasterlinks)
  350.         cat config.mk \
  351.         FILES/{access,libraries,storage,utilities,inh}.mkf \
  352.         port.mk support.mk cinterface.mk postmaster.mk $defaultrules \
  353.         | (cd ..; $MAKE puremaster)
  354.         breaksw
  355.     case "puremonitor":        # the terminal monitor
  356.         cat config.mk \
  357.         FILES/support.mkf support.mk $defaultrules \
  358.         | (cd .. ; $MAKE puremonitor)
  359.         breaksw
  360.     case "support":        # all the support targets 
  361.         cat config.mk FILES/support.mkf support.mk cinterface.mk \
  362.         $defaultrules \
  363.         | (cd ..; $MAKE support POSTGRESBIN=$POSTGRESHOME/bin )
  364.         breaksw
  365.     case "vacuum":
  366.         cat config.mk \
  367.         FILES/support.mkf support.mk cinterface.mk $defaultrules \
  368.         | (cd ..; $MAKE support POSTGRESBIN=$POSTGRESHOME/bin)
  369.         breaksw
  370.     case "pg_id":
  371.         cat config.mk \
  372.         FILES/support.mkf support.mk cinterface.mk $defaultrules \
  373.         | (cd ..; $MAKE pg_id)
  374.         break;
  375.     case "everything":
  376.         foreach i ($ALL)
  377.             csh Make $PFLAG $DFLAGS $SFLAG $opts $i
  378.         end
  379.         if (! -e everything.stat) then
  380.             touch everything.stat
  381.             chmod 444 everything.stat
  382.         endif
  383.         breaksw
  384.     case "install":
  385.         if ($ship == 1) then
  386.             if (! -e ./newport.stat) then
  387.                 ./newport
  388.             endif
  389.         endif
  390.         cp config.mk install$$.mk
  391.         chmod 777 install$$.mk
  392.         echo 'install:' >> install$$.mk
  393.         echo '    @ sh install.sh $(TREE) $(OD) $(PORTNAME) ' $ship "$MAKE" >>install$$.mk
  394.         if ($?SPRITE_OS) then
  395.             $MAKEF install < install$$.mk
  396.         else
  397.             $MAKE install < install$$.mk
  398.         endif
  399.         /bin/rm -f install$$.mk
  400.         breaksw
  401.     #"
  402.     #" Part 4b - support programs (not often recompiled )
  403.     #"
  404.     case "sample":
  405.         cat config.mk ../sample/Makefile.raw >! ../sample/Makefile
  406.         breaksw
  407.     case "toptest":
  408.         cat config.mk ../test/Makefile.raw >! ../test/Makefile
  409.         breaksw
  410.     #
  411.     # Part 5 : people's personal stuff 
  412.     #        it might be argued that this should not be here
  413.     #
  414.         case "test":
  415.                 cat config.mk \
  416.                 FILES/{commands,executor,parser}.mkf \
  417.                 FILES/{planner,rules,inh}.mkf \
  418.                 FILES/{access,libraries,storage,utilities}.mkf \
  419.         FILES/{tcop,test}.mkf \
  420.                 port.mk test.mk $defaultrules \
  421.                 | (cd ..; $MAKE test)
  422.                 breaksw
  423.         case "dumpbpages":
  424.                 cat FILES/test.mkf config.mk $defaultrules test.mk \
  425.                 | (cd ..; $MAKE dumpbpages)
  426.                 breaksw
  427.         case "rtdump":
  428.                 cat FILES/test.mkf config.mk $defaultrules test.mk \
  429.                 | (cd ..; $MAKE rtdump)
  430.                 breaksw
  431.         case "testbtree":
  432.                 cat FILES/test.mkf config.mk $defaultrules test.mk \
  433.                 | (cd ..; $MAKE testbtree)
  434.                 breaksw
  435.     case "ifiles":        # intermediate .i files (for debugging)
  436.         cat config.mk FILES/inh.mkf inh.mk \
  437.         | (cd ..; $MAKE genifiles)
  438.         breaksw
  439.     case "rmifiles":    # remove .i files (for debugging)
  440.         cat config.mk FILES/inh.mkf inh.mk \
  441.         | (cd ..; $MAKE rmifiles)
  442.         breaksw
  443.     case "checkout/*":    # checkout files from checkout script
  444.         set script=$i:t 
  445.         set rmscript=0
  446.         if (! -e $script) then
  447.             if (-e RCS/$script,v) then
  448.             echo using RCS/$script,v ...
  449.             co $script >& /dev/null
  450.             set rmscript=1
  451.             else
  452.             echo neither $script or RCS/$script,v exists
  453.             exit 1
  454.             endif
  455.         endif
  456.         cat config.mk $script | (cd ..; $MAKE checkout)
  457.         if ($rmscript == 1) then
  458.             rm -f $script
  459.         endif
  460.         breaksw
  461.     #
  462.     # Part 5a : cim's stuff.  
  463.     #        ignore this if you are not cim.
  464.     #
  465.     case "cim-*":        # do cim's stuff
  466.         cat config.mk $HOME/conf/cim.mk | (cd ..; $MAKE $i)
  467.         breaksw
  468.     case "hdep/*":        # find header file dependencies
  469.         setenv HFILE `echo $i | sed -e 's/^[a-zA-Z]*\///'`
  470.         cat config.mk $HOME/conf/cim.mk | (cd ..; $MAKE hdep)
  471.         breaksw
  472.     case "execnodes-ah":    # execnodes.a.h file
  473.         cat config.mk FILES/inh.mkf inh.mk \
  474.         | (cd ..; $MAKE execnodes-ah)
  475.         breaksw
  476.     # 5b. Adam's support stuff
  477.     #     someone besides adam might find this useful
  478.     case "TAGS":
  479.         echo Making TAGS file
  480.         (cd ../src; etags */*.[ch] */*/*.[ch])
  481.         breaksw
  482.     case "usefulstuff":
  483.         echo Making file list + other useful stuff
  484.         (cd ../src; find . -name "*.[ch]" -print > file.list; \
  485.         grep -n elog `cat file.list` > elog.hit; \
  486.         grep -n \#define `cat file.list` > macro.def; \
  487.         etags `cat file.list` )
  488.         breaksw
  489.     #
  490.     # Part 6 : default target
  491.     #
  492.     default:        # makes a specific pathname
  493.         cat config.mk \
  494.         FILES/{commands,executor,parser}.mkf \
  495.         FILES/{planner,rules,tcop,inh}.mkf \
  496.         FILES/{access,libraries,storage,utilities}.mkf \
  497.         port.mk postgres.mk $defaultrules \
  498.         $accessdeps $commanddeps $executordeps $libdeps $maindeps \
  499.         $parserdeps $plannerdeps $portdeps $rulesdeps $storagedeps \
  500.         $tcopdeps $utilsdeps \
  501.         | (cd ..; $MAKE $i)
  502.         breaksw    
  503.     endsw
  504. end
  505.  
  506. if (! $?PARALLELMAKE) echo "done"
  507.